package servicos;

import java.security.*;
public class Assinatura
{
    public static void main(String [] args)
    {
        KeyPairGenerator chaves = null;
        Signature sgn = null;
        Signature vrf = null;
        byte [] assina = null;

        String mensagem = "";
        for(int i = 0; i < args.length; i++)
            mensagem = mensagem + " " + args[i];    
        
        try
        {
            chaves = KeyPairGenerator.getInstance("DSA");
            sgn = Signature.getInstance("DSA");
        }
        catch(NoSuchAlgorithmException e) {}

        chaves.initialize(512);
        System.out.println("Gerando o par de chaves...");
        KeyPair par = chaves.generateKeyPair();
        PrivateKey priv = par.getPrivate();
        PublicKey pub = par.getPublic();
        try
        {
            sgn.initSign(priv);
            sgn.update(mensagem.getBytes());
            assina = sgn.sign();
        }
        catch(Exception e) {}
        
        System.out.println(priv);
        System.out.println(pub);
        System.out.println("Mensagem: " + mensagem);
        System.out.print("Assinatura da mensagem: ");
        
        for (int i = 0; i < assina.length; i++)
            System.out.print((assina[i] + 128) + " ");
        System.out.println("");
        
        boolean ok;
        
        //inicia a verifica��o
        try
        {
            vrf = Signature.getInstance("DSA");
            vrf.initVerify(pub);
            vrf.update(mensagem.getBytes());
            ok = vrf.verify(assina);
            System.out.println("Validou: " + ok);
        }
        catch(Exception e) {}
    }
}

